#ifndef XGE_XUSER_TASK_H_
#define XGE_XUSER_TASK_H_
#include "xge_common_config.h"
#include "xtask.h"

namespace xge{

  using xge_internal::Task;
  using xge_internal::Timer;
  // XUserTask
  // Any user defined task should use this as the user task stuff
  // the caller class won't do any down_cast ( since We do not know the metal type data )
  // so it just treat it as the XTask derive class 
  // it is not the XKillableTask and XPriorityTask 
  // same as XCommonTask ( dispatching it into the XCommonTask related worker queue )
  class UserTask : public Task {
  public:
    UserTask( int task_type , const Timer::tick_t& time_out ) :
        Task(Task::DOWNCAST_USER_TASK,task_type,time_out){}
  };

}// namespace xge
#endif